/*
 * 创建日期 2006-9-21
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package com.vanda.report.view;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.validator.GenericValidator;

import com.vanda.db.cache.CodeHelper;
import com.vanda.report.ReportException;
import com.vanda.report.ReportInnerData;
import com.vanda.report.Validation;
/**
 * @author eagle
 *
 * 更改所生成类型注释的模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class CodeCellElement extends CellElement {
	//代码表名称
	private String code_name;
	//需要显示的列名
	private String code_col;
	private String key_property = null;
	private String key_value = null;
	
	public void validator() throws ReportException {
		Validation.checkRequired("CodeCellElement","code_name",code_name);
		Validation.checkRequired("CodeCellElement","code_col",code_col);
	}
	
	protected Object getCellValue(ReportInnerData reportData,Object rowBean) throws Exception{
		Object obj = super.getCellValue(reportData,rowBean);
		if(obj == null){
			return obj;
		}
		
		List lstKey = new ArrayList();
		String key = obj.toString();
		
		lstKey.add(key);
		
		if(!GenericValidator.isBlankOrNull(key_property)){
			String[] keyPropertys = key_property.split(",");
			for(int i=0;i<keyPropertys.length;i++){
				Object keyObj = super.getProperty(rowBean, keyPropertys[i]);
				if(keyObj != null)
					lstKey.add(keyObj.toString());
			}
		}
		if(!GenericValidator.isBlankOrNull(key_value)){
			String[] keyValues = key_value.split(",");
			for(int i=0;i<keyValues.length;i++){
				lstKey.add(keyValues[i]);
			}
		}
		
		//取得代码表的值
		String value = CodeHelper.getCodeValue(code_name,code_col,(String[])lstKey.toArray(new String[0]));
		
		return value;
	}
	/**
	 * @return
	 */
	public String getCode_col() {
		return code_col;
	}

	/**
	 * @return
	 */
	public String getCode_name() {
		return code_name;
	}

	/**
	 * @param string
	 */
	public void setCode_col(String string) {
		code_col = string;
	}

	/**
	 * @param string
	 */
	public void setCode_name(String string) {
		code_name = string;
	}

	/**
	 * @return
	 */
	public String getKey_property() {
		return key_property;
	}

	/**
	 * @return
	 */
	public String getKey_value() {
		return key_value;
	}

	/**
	 * @param string
	 */
	public void setKey_property(String string) {
		key_property = string;
	}

	/**
	 * @param string
	 */
	public void setKey_value(String string) {
		key_value = string;
	}

}
